﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DevExpress.Skins;
using DevExpress.LookAndFeel;
using KNS.Invoice.UI;
using InvoiceManagement.Controllers;
using DAL;
using BLL;
using DAL.Linq;

namespace InvoiceManagement
{
    public partial class frmNguoiDung : KNSFormBase
    {

        #region "Khai báo biến"
        public string strAction = "";
        public int intID;
        public string strUsercode = "";
        public string strUserPass = "";
        public string strUserName = "";
        public bool blnIsUse = false;


        public frmNguoiDung()
        {
            InitializeComponent();
        }
        #endregion

        #region "Các hàm sự kiện trên form"
        private void frmNguoiDung_Load(object sender, EventArgs e)
        {
            txtUserCode.Focus();
            strAction = "Load";
            SetControls();
            GetAllUsers();
            grdData_Click(sender, e);
        }

        private void btnThemMoi_Click(object sender, EventArgs e)
        {
            strAction = "AddNew";
            SetControls();
            ClearText();
        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            strAction = "Edit";
            SetControls();
            txtUserCode.Enabled = false;
            txtPassword.Focus();
        }

        private void btnLuu_Click(object sender, EventArgs e)
        {                        
            bool bln = false;            

            SYS_USERController sys_User = new SYS_USERController();

            if (CheckData() == true)
            {
                if (strAction == "AddNew")
                {
                    bln = sys_User.Insert_Sys_Users(txtUserCode.Text.Trim().ToString(), txtUserName.Text.Trim().ToString(), txtPassword.Text.Trim().ToString(), chkIsUse.Checked);
                }
                else
                {
                    if (strAction == "Edit")
                    {                        
                        bln = sys_User.Update_Sys_Users(intID, txtUserCode.Text.Trim().ToString(), txtUserName.Text.Trim().ToString(), txtPassword.Text.Trim().ToString(), chkIsUse.Checked);
                    }
                }

                if (bln == true)
                {
                    KNSMessageBox.Show("Cập nhật thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    strAction = "Load";
                    SetControls();
                    GetAllUsers();
                    grdData_Click(sender, e);
                    //ClearText();
                }
                else
                {
                    KNSMessageBox.Show("Cập nhật thất bại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            strAction = "Load";
            SetControls();
            GetAllUsers();
            grdData_Click(sender, e);
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            if (gridView1.RowCount > 0)
            {
                if (KNSMessageBox.Show("Bạn có chắc muốn xoá?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                {
                    bool bln = false;
                    SYS_USERController sys_User = new SYS_USERController();
                    bln = sys_User.Delete_Sys_Users(intID);
                    if (bln == true)
                    {
                        KNSMessageBox.Show("Cập nhật thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        strAction = "Load";
                        SetControls();
                        GetAllUsers();
                        grdData_Click(sender, e);
                    }
                    else
                    {
                        KNSMessageBox.Show("Cập nhật thất bại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }                
            }
            else
            {
                KNSMessageBox.Show("Không có dữ liệu để xoá", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
        }

        private void btnTimKiem_Click(object sender, EventArgs e)
        {
            GetAllUsers();
            grdData_Click(sender, e);
        }

        private void grdData_Click(object sender, EventArgs e)
        {
            if (gridView1.RowCount > 0)
            {
                int[] arrSelected = gridView1.GetSelectedRows();
                if (arrSelected != null && arrSelected.Length > 0)
                {
                    int selectedIndex = arrSelected[0];
                    if (selectedIndex >= 0)
                    {
                        Object a = gridView1.GetRow(selectedIndex);
                        if (a != null)
                        {
                            intID = (a as SYS_USER).UserID;
                            strUsercode = (a as SYS_USER).UserCode.ToString();
                            strUserPass = (a as SYS_USER).UserPass.ToString();
                            strUserName = (a as SYS_USER).UserName.ToString();
                            blnIsUse = (bool)(a as SYS_USER).IsUse;

                        }
                    }
                }
                txtUserCode.Text = strUsercode;
                txtPassword.Text = strUserPass;
                txtUserName.Text = strUserName;
                chkIsUse.Checked = blnIsUse;
            }
        }
        #endregion

        #region "Các hàm xử lý khác"
        public void ClearText()
        {
            txtUserCode.Text = "";
            txtPassword.Text = "";
            txtUserName.Text = "";
            chkIsUse.Checked = false;
            txtUserCode.Focus();
        }

        public void SetControls()
        {
            if (strAction == "Load")
            {
                btnThemMoi.Enabled = true;
                btnSua.Enabled = true;
                btnLuu.Enabled = false;
                btnHuy.Enabled = false;
                btnTimKiem.Enabled = true;
                btnDelete.Enabled = true;

                txtUserCode.Enabled = false;
                txtPassword.Enabled = false;
                txtUserName.Enabled = false;
                chkIsUse.Enabled = false;
            }

            if (strAction == "AddNew" || strAction == "Edit")
            {
                btnThemMoi.Enabled = false;
                btnSua.Enabled = false;
                btnLuu.Enabled = true;
                btnHuy.Enabled = true;
                btnTimKiem.Enabled = false;
                btnDelete.Enabled = false;

                txtUserCode.Enabled = true;
                txtPassword.Enabled = true;
                txtUserName.Enabled = true;
                chkIsUse.Enabled = true;
            }
        }

        public bool CheckData()
        {
            try
            {
                if (txtUserCode.Text == string.Empty || txtUserCode.Text == "")
                {
                    KNSMessageBox.Show("Chưa nhập tên đăng nhập", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    txtUserCode.Focus();
                    return false;
                }

                if (txtPassword.Text == string.Empty || txtPassword.Text == "")
                {
                    KNSMessageBox.Show("Chưa nhập mật khẩu", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    txtPassword.Focus();
                    return false;
                }

                if (txtUserName.Text == string.Empty || txtUserName.Text == "")
                {
                    KNSMessageBox.Show("Chưa nhập họ và tên", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    txtUserName.Focus();
                    return false;
                }

                return true;
            }
            catch { return false; }
        }
        #endregion
                     
        #region "Các hàm load data"
        public void GetAllUsers()
        {
            IList<SYS_USER> lst = null;
            SYS_USERController sys_User = new SYS_USERController();
            lst = sys_User.GetAll_Users();
            grdData.DataSource = lst;
        }
        #endregion 
        
    }
}